ZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggMDQ3N2NkMy4uMDM3MWQ0NiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTIzMzQsNiArMjMzNCw5IEBACiBweGEyNTVfaWRwX2NvbmZpZzoJdW5jb25maWcKIAlAJChNS0NPTkZJRykgJChAOl9jb25maWc9KSBhcm0gcHhhIHB4YTI1NV9pZHAKIAordHJpemVwc2l2X2NvbmZpZwk6CXVuY29uZmlnCisJQCQoTUtDT05GSUcpICQoQDpfY29uZmlnPSkgYXJtIHB4YSB0cml6ZXBzaXYKKwogd2VwZXAyNTBfY29uZmlnCToJdW5jb25maWcKIAlAJChNS0NPTkZJRykgJChAOl9jb25maWc9KSBhcm0gcHhhIHdlcGVwMjUwCiAKZGlmZiAtLWdpdCBhL2JvYXJkL3RyaXplcHNpdi9NYWtlZmlsZSBiL2JvYXJkL3RyaXplcHNpdi9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTVlMTdkCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvdHJpemVwc2l2L01ha2VmaWxlCkBAIC0wLDAgKzEsNTEgQEAKKyMKKyMgKEMpIENvcHlyaWdodCAyMDAwLTIwMDYKKyMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyMKKyMgU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyMgcHJvamVjdC4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorIyB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyMgTUEgMDIxMTEtMTMwNyBVU0EKKyMKKworaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCisKK0xJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKKworQ09CSlMJOj0gY29ueHMubyBlZXByb20ubworU09CSlMJOj0gbG93bGV2ZWxfaW5pdC5vIHB4YXZvbHRhZ2UubworCitTUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCitPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKK1NPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKKworJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKKwkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKKworY2xlYW46CisJcm0gLWYgJChTT0JKUykgJChPQkpTKQorCitkaXN0Y2xlYW46CWNsZWFuCisJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZGVmaW5lcyAkKG9iaikuZGVwZW5kIHRhcmdldAoraW5jbHVkZSAkKFNSQ1RSRUUpL3J1bGVzLm1rCisKK3NpbmNsdWRlICQob2JqKS5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvYm9hcmQvdHJpemVwc2l2L2NvbmZpZy5tayBiL2JvYXJkL3RyaXplcHNpdi9jb25maWcubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ4NmY2YgotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3RyaXplcHNpdi9jb25maWcubWsKQEAgLTAsMCArMSwzIEBACitURVhUX0JBU0UgPTB4YTFmMDAwMDAKKyMgMHhhMTcwMDAwMAorI1RFWFRfQkFTRSA9IDAKZGlmZiAtLWdpdCBhL2JvYXJkL3RyaXplcHNpdi9jb254cy5jIGIvYm9hcmQvdHJpemVwc2l2L2NvbnhzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M2Yzg1NQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL3RyaXplcHNpdi9jb254cy5jCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA3CisgKiBTdGVmYW5vIEJhYmljLCBERU5YIEdtYmgsIHNiYWJpY0BkZW54LmRlCisgKgorICogKEMpIENvcHlyaWdodCAyMDA0CisgKiBSb2JlcnQgV2hhbGV5LCBBcHBsaWVkIERhdGEgU3lzdGVtcywgSW5jLiByd2hhbGV5QGFwcGxpZWRkYXRhLm5ldAorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMgorICogS3lsZSBIYXJyaXMsIE5leHVzIFRlY2hub2xvZ2llcywgSW5jLiBraGFycmlzQG5leHVzLXRlY2gubmV0CisgKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBTeXNnbyBSZWFsLVRpbWUgU29sdXRpb25zLCBHbWJIIDx3d3cuZWxpbm9zLmNvbT4KKyAqIE1hcml1cyBHcm9lZ2VyIDxtZ3JvZWdlckBzeXNnby5kZT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KKworREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CisKKyNkZWZpbmUJCVJIX0FfUFNNCSgxIDw8IDgpCS8qIHBvd2VyIHN3aXRjaGluZyBtb2RlICovCisjZGVmaW5lCQlSSF9BX05QUwkoMSA8PCA5KQkvKiBubyBwb3dlciBzd2l0Y2hpbmcgKi8KKworZXh0ZXJuIHN0cnVjdCBzZXJpYWxfZGV2aWNlIHNlcmlhbF9mZnVhcnRfZGV2aWNlOworZXh0ZXJuIHN0cnVjdCBzZXJpYWxfZGV2aWNlIHNlcmlhbF9idHVhcnRfZGV2aWNlOworZXh0ZXJuIHN0cnVjdCBzZXJpYWxfZGV2aWNlIHNlcmlhbF9zdHVhcnRfZGV2aWNlOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8qCisgKiBNaXNjZWxhbmVvdXMgcGxhdGZvcm0gZGVwZW5kZW50IGluaXRpYWxpc2F0aW9ucworICovCisKK3ZvaWQgdXNiX2JvYXJkX2luaXQodm9pZCkKK3sKKwlVSENIUiA9IChVSENIUiB8IFVIQ0hSX1BDUEwgfCBVSENIUl9QU1BMKSAmCisJCX4oVUhDSFJfU1NFUDAgfCBVSENIUl9TU0VQMSB8IFVIQ0hSX1NTRVAyIHwgVUhDSFJfU1NFKTsKKworCVVIQ0hSIHw9IFVIQ0hSX0ZTQklSOworCisJd2hpbGUgKFVIQ0hSICYgVUhDSFJfRlNCSVIpOworCisJVUhDSFIgJj0gflVIQ0hSX1NTRTsKKwlVSENISUUgPSAoVUhDSElFX1VQUklFIHwgVUhDSElFX1JXSUUpOworCisJLyogQ2xlYXIgYW55IE9URyBQaW4gSG9sZCAqLworCWlmIChQU1NSICYgUFNTUl9PVEdQSCkKKwkJUFNTUiB8PSBQU1NSX09UR1BIOworCisJVUhDUkhEQSAmPSB+KFJIX0FfTlBTKTsKKwlVSENSSERBIHw9IFJIX0FfUFNNOworCisJLyogU2V0IHBvcnQgcG93ZXIgY29udHJvbCBtYXNrIGJpdHMsIG9ubHkgMyBwb3J0cy4gKi8KKwlVSENSSERCIHw9ICgweDc8PDE3KTsKK30KKwordm9pZCB1c2JfYm9hcmRfaW5pdF9mYWlsKHZvaWQpCit7CisJcmV0dXJuOworfQorCit2b2lkIHVzYl9ib2FyZF9zdG9wKHZvaWQpCit7CisJVUhDSFIgfD0gVUhDSFJfRkhSOworCXVkZWxheSgxMSk7CisJVUhDSFIgJj0gflVIQ0hSX0ZIUjsKKworCVVIQ0NPTVMgfD0gMTsKKwl1ZGVsYXkoMTApOworCisJQ0tFTiAmPSB+Q0tFTjEwX1VTQkhPU1Q7CisKKwlwdXRzKCJDYWxsZWQgVVNCIFNUT1BcbiIpOworCXJldHVybjsKK30KKworaW50IGJvYXJkX2luaXQgKHZvaWQpCit7CisJLyogbWVtb3J5IGFuZCBjcHUtc3BlZWQgYXJlIHNldHVwIGJlZm9yZSByZWxvY2F0aW9uICovCisJLyogc28gd2UgZG8gX25vdGhpbmdfIGhlcmUgKi8KKworCS8qIGFyY2ggbnVtYmVyIG9mIENvblhTIEJvYXJkICovCisJZ2QtPmJkLT5iaV9hcmNoX251bWJlciA9IDc3NjsKKworCS8qIGFkcmVzcyBvZiBib290IHBhcmFtZXRlcnMgKi8KKwlnZC0+YmQtPmJpX2Jvb3RfcGFyYW1zID0gMHhhMDAwMDAzYzsKKworCXJldHVybiAwOworfQorCitpbnQgYm9hcmRfbGF0ZV9pbml0KHZvaWQpCit7CisjaWYgZGVmaW5lZChDT05GSUdfU0VSSUFMX01VTFRJKQorCWNoYXIgKmNvbnNvbGU9Z2V0ZW52KCJib290X2NvbnNvbGUiKTsKKworCWlmICgoc3RyY21wKGNvbnNvbGUsInNlcmlhbF9idHVhcnQiKSA9PSAwKSB8fAorCQkoc3RyY21wKGNvbnNvbGUsInNlcmlhbF9zdHVhcnQiKSA9PSAwKSB8fAorCQkoc3RyY21wKGNvbnNvbGUsInNlcmlhbF9mZnVhcnQiKSA9PSAwKSkgeworCQkJc2V0ZW52KCJzdGRvdXQiLGNvbnNvbGUpOworCQkJc2V0ZW52KCJzdGRpbiIsIGNvbnNvbGUpOworCQkJc2V0ZW52KCJzdGRlcnIiLGNvbnNvbGUpOworCX0gZWxzZSB7CisJCXNldGVudigic3Rkb3V0IiwgInNlcmlhbCIpOworCQlzZXRlbnYoInN0ZGluIiwgInNlcmlhbCIpOworCQlzZXRlbnYoInN0ZGVyciIsICJzZXJpYWwiKTsKKwl9CisjZW5kaWYKKwlyZXR1cm4gMDsKK30KKworc3RydWN0IHNlcmlhbF9kZXZpY2UgKmRlZmF1bHRfc2VyaWFsX2NvbnNvbGUgKHZvaWQpCit7CisJcmV0dXJuICZzZXJpYWxfZmZ1YXJ0X2RldmljZTsKK30KKworaW50IGRyYW1faW5pdCAodm9pZCkKK3sKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNXzE7CisJZ2QtPmJkLT5iaV9kcmFtWzBdLnNpemUgPSBQSFlTX1NEUkFNXzFfU0laRTsKKwlnZC0+YmQtPmJpX2RyYW1bMV0uc3RhcnQgPSBQSFlTX1NEUkFNXzI7CisJZ2QtPmJkLT5iaV9kcmFtWzFdLnNpemUgPSBQSFlTX1NEUkFNXzJfU0laRTsKKwlnZC0+YmQtPmJpX2RyYW1bMl0uc3RhcnQgPSBQSFlTX1NEUkFNXzM7CisJZ2QtPmJkLT5iaV9kcmFtWzJdLnNpemUgPSBQSFlTX1NEUkFNXzNfU0laRTsKKwlnZC0+YmQtPmJpX2RyYW1bM10uc3RhcnQgPSBQSFlTX1NEUkFNXzQ7CisJZ2QtPmJkLT5iaV9kcmFtWzNdLnNpemUgPSBQSFlTX1NEUkFNXzRfU0laRTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYm9hcmQvdHJpemVwc2l2L2VlcHJvbS5jIGIvYm9hcmQvdHJpemVwc2l2L2VlcHJvbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkM2JjMDAKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC90cml6ZXBzaXYvZWVwcm9tLmMKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNworICogU3RlZmFubyBCYWJpYywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgc2JhYmljQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGNvbW1hbmQuaD4KKworc3RhdGljIHVuc2lnbmVkIGNoYXIgc3JvbVsxMjhdOworZXh0ZXJuIHUxNiByZWFkX3Nyb21fd29yZChpbnQpOworZXh0ZXJuIHZvaWQgd3JpdGVfc3JvbV93b3JkKGludCBvZmZzZXQsIHUxNiB2YWwpOworCitzdGF0aWMgaW50IGRvX3JlYWRfZG05MDAwX2VlcHJvbSAoIGNtZF90YmxfdCAqY21kdHAsIGludCBmbGFnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisJaW50IGk7CisKKwlmb3IgKGk9MDsgaSA8IDB4NDA7IGkrKykgeworCQlpZiAoIShpICUgMHgxMCkpCisJCQlwcmludGYoIlxuJTA4bHg6IiwgaSk7CisJCXByaW50ZigiICUwNHgiLCByZWFkX3Nyb21fd29yZChpKSk7CisJfQorCXByaW50ZiAoIlxuIik7CisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIGludCBkb193cml0ZV9kbTkwMDBfZWVwcm9tICggY21kX3RibF90ICpjbWR0cCwgaW50IGZsYWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKwlpbnQgb2Zmc2V0LHZhbHVlOworCisJaWYgKGFyZ2MgPCA0KSB7CisJCXByaW50ZiAoIlVzYWdlOlxuJXNcbiIsIGNtZHRwLT51c2FnZSk7CisJCXJldHVybiAxOworCX0KKworCW9mZnNldD1zaW1wbGVfc3RydG91bChhcmd2WzJdLE5VTEwsMTYpOworCXZhbHVlPXNpbXBsZV9zdHJ0b3VsKGFyZ3ZbM10sTlVMTCwxNik7CisJaWYgKG9mZnNldCA+IDB4NDApIHsKKwkJcHJpbnRmKCJXcm9uZyBvZmZzZXQgOiAweCV4XG4iLG9mZnNldCk7CisJCXByaW50ZiAoIlVzYWdlOlxuJXNcbiIsIGNtZHRwLT51c2FnZSk7CisJCXJldHVybiAxOworCX0KKwl3cml0ZV9zcm9tX3dvcmQob2Zmc2V0LCB2YWx1ZSk7CisJcmV0dXJuICgwKTsKK30KKworaW50IGRvX2RtOTAwMF9lZXByb20gKCBjbWRfdGJsX3QgKmNtZHRwLCBpbnQgZmxhZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworCWlmIChhcmdjIDwgMikgeworCQlwcmludGYgKCJVc2FnZTpcbiVzXG4iLCBjbWR0cC0+dXNhZ2UpOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAoc3RyY21wIChhcmd2WzFdLCJyZWFkIikgPT0gMCkgeworCQlyZXR1cm4gKGRvX3JlYWRfZG05MDAwX2VlcHJvbShjbWR0cCxmbGFnLGFyZ2MsYXJndikpOworCX0gZWxzZSBpZiAoc3RyY21wIChhcmd2WzFdLCJ3cml0ZSIpID09IDApIHsKKwkJcmV0dXJuIChkb193cml0ZV9kbTkwMDBfZWVwcm9tKGNtZHRwLGZsYWcsYXJnYyxhcmd2KSk7CisJfSBlbHNlIHsKKwkJcHJpbnRmICgiVXNhZ2U6XG4lc1xuIiwgY21kdHAtPnVzYWdlKTsKKwkJcmV0dXJuIDE7CisJfQorfQorCitVX0JPT1RfQ01EKAorCWRtOTAwMGVlLDQsMSxkb19kbTkwMDBfZWVwcm9tLAorCSJkbTkwMDBlZS0gUmVhZC9Xcml0ZSBlZXByb20gY29ubmVjdGVkIHRvIEV0aGVybmV0IENvbnRyb2xsZXJcbiIsCisJIlxuZG05MDAwZWUgd3JpdGUgPHdvcmQgb2Zmc2V0PiA8dmFsdWU+IFxuIgorCSJcdGRtOTAwMGVlIHJlYWQgXG4iCisJIlx0d29yZDpcdFx0MDAtMDIgOiBNQUMgQWRkcmVzc1xuIgorCSJcdFx0XHQwMy0wNyA6IERNOTAwMCBDb25maWd1cmF0aW9uXG4iCisJIlx0XHRcdDA4LTYzIDogVXNlciBkYXRhXG4iKTsKZGlmZiAtLWdpdCBhL2JvYXJkL3RyaXplcHNpdi9sb3dsZXZlbF9pbml0LlMgYi9ib2FyZC90cml6ZXBzaXYvbG93bGV2ZWxfaW5pdC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ODY5MzgKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC90cml6ZXBzaXYvbG93bGV2ZWxfaW5pdC5TCkBAIC0wLDAgKzEsNTAzIEBACisvKgorICogVGhpcyB3YXMgb3JpZ2luYWxseSBmcm9tIHRoZSBMdWJib2NrIHUtYm9vdCBwb3J0LgorICoKKyAqIE1vc3Qgb2YgdGhpcyB0YWtlbiBmcm9tIFJlZGJvb3QgaGFsX3BsYXRmb3JtX3NldHVwLmggd2l0aCBjbGVhbnVwCisgKgorICogTk9URTogSSBoYXZlbid0IGNsZWFuIHRoaXMgdXAgY29uc2lkZXJhYmx5LCBqdXN0IGVub3VnaCB0byBnZXQgaXQKKyAqIHJ1bm5pbmcuIFNlZSBoYWxfcGxhdGZvcm1fc2V0dXAuaCBmb3IgdGhlIHNvdXJjZS4gU2VlCisgKiBib2FyZC9jcmFkbGUvbG93bGV2ZWxfaW5pdC5TIGZvciBhbm90aGVyIFBYQTI1MCBzZXR1cCB0aGF0IGlzCisgKiBtdWNoIGNsZWFuZXIuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUgPHZlcnNpb24uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgorCisvKiB3YWl0IGZvciBjb3Byb2Nlc3NvciB3cml0ZSBjb21wbGV0ZSAqLworICAgLm1hY3JvIENQV0FJVCByZWcKKyAgIG1yYwlwMTUsMCxccmVnLGMyLGMwLDAKKyAgIG1vdglccmVnLFxyZWcKKyAgIHN1YglwYyxwYywjNAorICAgLmVuZG0KKworCisvKgorICoJTWVtb3J5IHNldHVwCisgKi8KKworLmdsb2JsIGxvd2xldmVsX2luaXQKK2xvd2xldmVsX2luaXQ6CisKKwkvKiBTZXQgdXAgR1BJTyBwaW5zIGZpcnN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwlsZHIJCXIwLAk9R1BTUjAKKwlsZHIJCXIxLAk9Q0ZHX0dQU1IwX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQU1IxCisJbGRyCQlyMSwJPUNGR19HUFNSMV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUFNSMgorCWxkcgkJcjEsCT1DRkdfR1BTUjJfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BTUjMKKwlsZHIJCXIxLAk9Q0ZHX0dQU1IzX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQQ1IwCisJbGRyCQlyMSwJPUNGR19HUENSMF9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUENSMQorCWxkcgkJcjEsCT1DRkdfR1BDUjFfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BDUjIKKwlsZHIJCXIxLAk9Q0ZHX0dQQ1IyX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQQ1IzCisJbGRyCQlyMSwJPUNGR19HUENSM19WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUkVSMAorCWxkcgkJcjEsCT1DRkdfR1JFUjBfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1JFUjEKKwlsZHIJCXIxLAk9Q0ZHX0dSRVIxX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdSRVIyCisJbGRyCQlyMSwJPUNGR19HUkVSMl9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUkVSMworCWxkcgkJcjEsCT1DRkdfR1JFUjNfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0ZFUjAKKwlsZHIJCXIxLAk9Q0ZHX0dGRVIwX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdGRVIxCisJbGRyCQlyMSwJPUNGR19HRkVSMV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HRkVSMgorCWxkcgkJcjEsCT1DRkdfR0ZFUjJfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0ZFUjMKKwlsZHIJCXIxLAk9Q0ZHX0dGRVIzX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQRFIwCisJbGRyCQlyMSwJPUNGR19HUERSMF9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HUERSMQorCWxkcgkJcjEsCT1DRkdfR1BEUjFfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R1BEUjIKKwlsZHIJCXIxLAk9Q0ZHX0dQRFIyX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdQRFIzCisJbGRyCQlyMSwJPUNGR19HUERSM19WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HQUZSMF9MCisJbGRyCQlyMSwJPUNGR19HQUZSMF9MX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIwX1UKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIwX1VfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0FGUjFfTAorCWxkcgkJcjEsCT1DRkdfR0FGUjFfTF9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HQUZSMV9VCisJbGRyCQlyMSwJPUNGR19HQUZSMV9VX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIyX0wKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIyX0xfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9R0FGUjJfVQorCWxkcgkJcjEsCT1DRkdfR0FGUjJfVV9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCWxkcgkJcjAsCT1HQUZSM19MCisJbGRyCQlyMSwJPUNGR19HQUZSM19MX1ZBTAorCXN0cgkJcjEsICAgW3IwXQorCisJbGRyCQlyMCwJPUdBRlIzX1UKKwlsZHIJCXIxLAk9Q0ZHX0dBRlIzX1VfVkFMCisJc3RyCQlyMSwgICBbcjBdCisKKwlsZHIJCXIwLAk9UFNTUgkJLyogZW5hYmxlIEdQSU8gcGlucyAqLworCWxkcgkJcjEsCT1DRkdfUFNTUl9WQUwKKwlzdHIJCXIxLCAgIFtyMF0KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBFbmFibGUgbWVtb3J5IGludGVyZmFjZQkJCQkJICAgICovCisJLyoJCQkJCQkJCSAgICAqLworCS8qIFRoZSBzZXF1ZW5jZSBiZWxvdyBpcyBiYXNlZCBvbiB0aGUgcmVjb21tZW5kZWQgaW5pdCBzdGVwcwkgICAgKi8KKwkvKiBkZXRhaWxlZCBpbiB0aGUgSW50ZWwgUFhBMjUwIE9wZXJhdGluZyBTeXN0ZW1zIERldmVsb3BlcnMgR3VpZGUsICovCisJLyogQ2hhcHRlciAxMC4JCQkJCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIFN0ZXAgMTogV2FpdCBmb3IgYXQgbGVhc3QgMjAwIG1pY3Jvc2Vkb25kcyB0byBhbGxvdyBpbnRlcm5hbAkgICAgKi8KKwkvKgkgICBjbG9ja3MgdG8gc2V0dGxlLiBPbmx5IG5lY2Vzc2FyeSBhZnRlciBoYXJkIHJlc2V0Li4uCSAgICAqLworCS8qCSAgIEZJWE1FOiBjYW4gYmUgb3B0aW1pemVkIGxhdGVyCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJbGRyIHIzLCA9T1NDUgkJCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCisJbW92IHIyLCAjMAorCXN0ciByMiwgW3IzXQorCWxkciByNCwgPTB4MzAwCQkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KKwkJCQkJLyogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eQkgICAgKi8KKzE6CisJbGRyIHIyLCBbcjNdCisJY21wIHI0LCByMgorCWJndCAxYgorCittZW1faW5pdDoKKworCWxkcglyMSwgID1NRU1DX0JBU0UJCS8qIGdldCBtZW1vcnkgY29udHJvbGxlciBiYXNlIGFkZHIuICovCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAyYTogSW5pdGlhbGl6ZSBBc3luY2hyb25vdXMgc3RhdGljIG1lbW9yeSBjb250cm9sbGVyCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCS8qIE1TQyByZWdpc3RlcnM6IHRpbWluZywgYnVzIHdpZHRoLCBtZW0gdHlwZQkJCSAgICAqLworCisJLyogTVNDMDogbkNTKDAsMSkJCQkJCQkgICAgKi8KKwlsZHIJcjIsICAgPUNGR19NU0MwX1ZBTAorCXN0cglyMiwgICBbcjEsICNNU0MwX09GRlNFVF0KKwlsZHIJcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCS8qIHJlYWQgYmFjayB0byBlbnN1cmUJICAgICovCisJCQkJCQkvKiB0aGF0IGRhdGEgbGF0Y2hlcwkgICAgKi8KKwkvKiBNU0MxOiBuQ1MoMiwzKQkJCQkJCSAgICAqLworCWxkcglyMiwgID1DRkdfTVNDMV9WQUwKKwlzdHIJcjIsICBbcjEsICNNU0MxX09GRlNFVF0KKwlsZHIJcjIsICBbcjEsICNNU0MxX09GRlNFVF0KKworCS8qIE1TQzI6IG5DUyg0LDUpCQkJCQkJICAgICovCisJbGRyCXIyLCAgPUNGR19NU0MyX1ZBTAorCXN0cglyMiwgIFtyMSwgI01TQzJfT0ZGU0VUXQorCWxkcglyMiwgIFtyMSwgI01TQzJfT0ZGU0VUXQorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIFN0ZXAgMmI6IEluaXRpYWxpemUgQ2FyZCBJbnRlcmZhY2UJCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisJLyogTUVDUjogTWVtb3J5IEV4cGFuc2lvbiBDYXJkIFJlZ2lzdGVyCQkJCSAgICAqLworCWxkcglyMiwgID1DRkdfTUVDUl9WQUwKKwlzdHIJcjIsICBbcjEsICNNRUNSX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01FQ1JfT0ZGU0VUXQorCisJLyogTUNNRU0wOiBDYXJkIEludGVyZmFjZSBzbG90IDAgdGltaW5nCQkJCSAgICAqLworCWxkcglyMiwgID1DRkdfTUNNRU0wX1ZBTAorCXN0cglyMiwgIFtyMSwgI01DTUVNMF9PRkZTRVRdCisJbGRyCXIyLAlbcjEsICNNQ01FTTBfT0ZGU0VUXQorCisJLyogTUNNRU0xOiBDYXJkIEludGVyZmFjZSBzbG90IDEgdGltaW5nCQkJCSAgICAqLworCWxkcglyMiwgID1DRkdfTUNNRU0xX1ZBTAorCXN0cglyMiwgIFtyMSwgI01DTUVNMV9PRkZTRVRdCisJbGRyCXIyLAlbcjEsICNNQ01FTTFfT0ZGU0VUXQorCisJLyogTUNBVFQwOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDAJICAgICovCisJbGRyCXIyLCAgPUNGR19NQ0FUVDBfVkFMCisJc3RyCXIyLCAgW3IxLCAjTUNBVFQwX09GRlNFVF0KKwlsZHIJcjIsCVtyMSwgI01DQVRUMF9PRkZTRVRdCisKKwkvKiBNQ0FUVDE6IENhcmQgSW50ZXJmYWNlIEF0dHJpYnV0ZSBTcGFjZSBUaW1pbmcsIHNsb3QgMQkgICAgKi8KKwlsZHIJcjIsICA9Q0ZHX01DQVRUMV9WQUwKKwlzdHIJcjIsICBbcjEsICNNQ0FUVDFfT0ZGU0VUXQorCWxkcglyMiwJW3IxLCAjTUNBVFQxX09GRlNFVF0KKworCS8qIE1DSU8wOiBDYXJkIEludGVyZmFjZSBJL08gU3BhY2UgVGltaW5nLCBzbG90IDAJCSAgICAqLworCWxkcglyMiwgID1DRkdfTUNJTzBfVkFMCisJc3RyCXIyLCAgW3IxLCAjTUNJTzBfT0ZGU0VUXQorCWxkcglyMiwJW3IxLCAjTUNJTzBfT0ZGU0VUXQorCisJLyogTUNJTzE6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMQkJICAgICovCisJbGRyCXIyLCAgPUNGR19NQ0lPMV9WQUwKKwlzdHIJcjIsICBbcjEsICNNQ0lPMV9PRkZTRVRdCisJbGRyCXIyLAlbcjEsICNNQ0lPMV9PRkZTRVRdCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAyYzogV3JpdGUgRkxZQ05GRyAgRklYTUU6IHdoYXQncyB0aGF0Pz8/CQkgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJbGRyCXIyLCAgPUNGR19GTFlDTkZHX1ZBTAorCXN0cglyMiwgIFtyMSwgI0ZMWUNORkdfT0ZGU0VUXQorCXN0cglyMiwJW3IxLCAjRkxZQ05GR19PRkZTRVRdCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogU3RlcCAyZDogSW5pdGlhbGl6ZSBUaW1pbmcgZm9yIFN5bmMgTWVtb3J5IChTRENMSzApCQkgICAgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvKiBCZWZvcmUgYWNjZXNzaW5nIE1EUkVGUiB3ZSBuZWVkIGEgdmFsaWQgRFJJIGZpZWxkLCBzbyB3ZSBzZXQJICAgICovCisJLyogdGhpcyB0byBwb3dlciBvbiBkZWZhdWx0cyArIERSSSBmaWVsZC4JCQkgICAgKi8KKworCWxkcglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0KKwlsZHIJcjIsCT0weEZGRgorCWJpYwlyNCwJcjQsIHIyCisKKwlsZHIJcjMsCT1DRkdfTURSRUZSX1ZBTAorCWFuZAlyMywJcjMsICByMgorCisJb3JyCXI0LAlyNCwgcjMKKwlzdHIJcjQsCVtyMSwgI01EUkVGUl9PRkZTRVRdCS8qIHdyaXRlIGJhY2sgTURSRUZSCSAgICAqLworCisJb3JyCXI0LCAgcjQsICNNRFJFRlJfSzBSVU4KKwlvcnIJcjQsICByNCwgI01EUkVGUl9LMERCNAorCW9ycglyNCwgIHI0LCAjTURSRUZSX0swRlJFRQorCW9ycglyNCwgIHI0LCAjTURSRUZSX0swREIyCisJb3JyCXI0LCAgcjQsICNNRFJFRlJfSzFEQjIKKwliaWMJcjQsICByNCwgI01EUkVGUl9LMUZSRUUKKwliaWMJcjQsICByNCwgI01EUkVGUl9LMkZSRUUKKworCXN0cglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRFJFRlIJICAgICovCisJbGRyCXI0LCAgW3IxLCAjTURSRUZSX09GRlNFVF0KKworCS8qIE5vdGU6IHByZXNlcnZlIHRoZSBtZHJlZnIgdmFsdWUgaW4gcjQJCQkgICAgKi8KKworCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIFN0ZXAgMzogSW5pdGlhbGl6ZSBTeW5jaHJvbm91cyBTdGF0aWMgTWVtb3J5IChGbGFzaC9QZXJpcGhlcmFscykgKi8KKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKwkvKiBJbml0aWFsaXplIFNYQ05GRyByZWdpc3Rlci4gQXNzZXJ0IHRoZSBlbmFibGUgYml0cwkJICAgICovCisKKwkvKiBXcml0ZSBTWE1SUyB0byBjYXVzZSBhbiBNUlMgY29tbWFuZCB0byBhbGwgZW5hYmxlZCBiYW5rcyBvZgkgICAgKi8KKwkvKiBzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5LiBOb3RlIHRoYXQgU1hMQ1IgbmVlZCBub3QgYmUgd3JpdHRlbiAgICovCisJLyogYXQgdGhpcyB0aW1lLgkJCQkJCSAgICAqLworCisJbGRyCXIyLCAgPUNGR19TWENORkdfVkFMCisJc3RyCXIyLCAgW3IxLCAjU1hDTkZHX09GRlNFVF0KKworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwkvKiBTdGVwIDQ6IEluaXRpYWxpemUgU0RSQU0JCQkJCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworCWJpYwlyNCwgcjQsICMoTURSRUZSX0syRlJFRSB8TURSRUZSX0sxRlJFRSB8IE1EUkVGUl9LMEZSRUUpCisKKwlvcnIJcjQsIHI0LCAjTURSRUZSX0sxUlVOCisJYmljCXI0LCByNCwgI01EUkVGUl9LMkRCMgorCXN0cglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KKwlsZHIJcjQsIFtyMSwgI01EUkVGUl9PRkZTRVRdCisKKwliaWMJcjQsIHI0LCAjTURSRUZSX1NMRlJTSAorCXN0cglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KKwlsZHIJcjQsIFtyMSwgI01EUkVGUl9PRkZTRVRdCisKKwlvcnIJcjQsIHI0LCAjTURSRUZSX0UxUElOCisJc3RyCXI0LCBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCWxkcglyNCwgW3IxLCAjTURSRUZSX09GRlNFVF0KKworCW5vcAorCW5vcAorCisKKwkvKiBTdGVwIDRkOiB3cml0ZSBNRENORkcgd2l0aCBNRENORkc6REV4IGRlYXNzZXJ0ZWQgKHNldCB0byAwKSwgdG8gICovCisJLyoJICAgIGNvbmZpZ3VyZSBidXQgbm90IGVuYWJsZSBlYWNoIFNEUkFNIHBhcnRpdGlvbiBwYWlyLgkgICAgKi8KKworCWxkcglyNCwJPUNGR19NRENORkdfVkFMCisJYmljCXI0LAlyNCwJIyhNRENORkdfREUwfE1EQ05GR19ERTEpCisJYmljCXI0LAlyNCwJIyhNRENORkdfREUyfE1EQ05GR19ERTMpCisKKwlzdHIJcjQsCVtyMSwgI01EQ05GR19PRkZTRVRdCS8qIHdyaXRlIGJhY2sgTURDTkZHCSAgICAqLworCWxkcglyNCwJW3IxLCAjTURDTkZHX09GRlNFVF0KKworCisJLyogU3RlcCA0ZTogV2FpdCBmb3IgdGhlIGNsb2NrIHRvIHRoZSBTRFJBTXMgdG8gc3RhYmlsaXplLAkgICAgKi8KKwkvKgkgICAgMTAwLi4yMDAgtXNlYy4JCQkJCSAgICAqLworCisJbGRyIHIzLCA9T1NDUgkJCS8qIHJlc2V0IHRoZSBPUyBUaW1lciBDb3VudCB0byB6ZXJvICovCisJbW92IHIyLCAjMAorCXN0ciByMiwgW3IzXQorCWxkciByNCwgPTB4MzAwCQkJLyogcmVhbGx5IDB4MkUxIGlzIGFib3V0IDIwMHVzZWMsICAgKi8KKwkJCQkJLyogc28gMHgzMDAgc2hvdWxkIGJlIHBsZW50eQkgICAgKi8KKzE6CisJICAgIGxkciByMiwgW3IzXQorCSAgICBjbXAgcjQsIHIyCisJICAgIGJndCAxYgorCisKKwkvKiBTdGVwIDRmOiBUcmlnZ2VyIGEgbnVtYmVyICh1c3VhbGx5IDgpIHJlZnJlc2ggY3ljbGVzIGJ5CSAgICAqLworCS8qCSAgICBhdHRlbXB0aW5nIG5vbi1idXJzdCByZWFkIG9yIHdyaXRlIGFjY2Vzc2VzIHRvIGRpc2FibGVkICovCisJLyoJICAgIFNEUkFNLCBhcyBjb21tb25seSBzcGVjaWZpZWQgaW4gdGhlIHBvd2VyIHVwIHNlcXVlbmNlICAgKi8KKwkvKgkgICAgZG9jdW1lbnRlZCBpbiBTRFJBTSBkYXRhIHNoZWV0cy4gVGhlIGFkZHJlc3MoZXMpIHVzZWQgICAqLworCS8qCSAgICBmb3IgdGhpcyBwdXJwb3NlIG11c3Qgbm90IGJlIGNhY2hlYWJsZS4JCSAgICAqLworCisJbGRyCXIzLAk9Q0ZHX0RSQU1fQkFTRQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCXN0cglyMiwJW3IzXQorCisKKwkvKiBTdGVwIDRnOiBXcml0ZSBNRENORkcgd2l0aCBlbmFibGUgYml0cyBhc3NlcnRlZAkJICAgICovCisJLyoJICAgIChNRENORkc6REV4IHNldCB0byAxKS4JCQkJICAgICovCisKKwlsZHIJcjMsCVtyMSwgI01EQ05GR19PRkZTRVRdCisJbW92CXI0LCByMworCW9ycglyMywJcjMsCSNNRENORkdfREUwCisJc3RyCXIzLAlbcjEsICNNRENORkdfT0ZGU0VUXQorCW1vdglyMCwgcjMKKworCS8qIFN0ZXAgNGg6IFdyaXRlIE1ETVJTLgkJCQkJICAgICovCisKKwlsZHIJcjIsICA9Q0ZHX01ETVJTX1ZBTAorCXN0cglyMiwgIFtyMSwgI01ETVJTX09GRlNFVF0KKworCS8qIGVuYWJsZSBBUEQgKi8KKwlsZHIJcjMsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCW9ycglyMywgIHIzLCAgI01EUkVGUl9BUEQKKwlzdHIJcjMsICBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCisJLyogV2UgYXJlIGZpbmlzaGVkIHdpdGggSW50ZWwncyBtZW1vcnkgY29udHJvbGxlciBpbml0aWFsaXNhdGlvbiAgICAqLworCisKK3NldHZvbHRhZ2U6CisKKwltb3YJcjEwLAlscgorCWJsCWluaXRQWEF2b2x0YWdlCS8qIEluIGNhc2UgdGhlIGJvYXJkIGlzIHJlYm9vdGluZyB3aXRoIGEgICAgKi8KKwltb3YJbHIsCXIxMAkvKiBsb3cgdm9sdGFnZSByYWlzZSBpdCB1cCB0byBhIGdvb2Qgb25lLiAgICovCisKKyNpZiAxCisJYiBpbml0aXJxcworI2VuZGlmCisKK3dha2V1cDoKKwkvKiBBcmUgd2Ugd2FraW5nIGZyb20gc2xlZXA/ICovCisJbGRyCXIwLAk9UkNTUgorCWxkcglyMSwJW3IwXQorCWFuZAlyMSwJcjEsICMoUkNTUl9HUFIgfCBSQ1NSX1NNUiB8IFJDU1JfV0RSIHwgUkNTUl9IV1IpCisJc3RyCXIxLAlbcjBdCisJdGVxCXIxLAkjUkNTUl9TTVIKKworCWJuZQlpbml0aXJxcworCisJbGRyCXIwLAk9UFNTUgorCW1vdglyMSwJI1BTU1JfUEgKKwlzdHIJcjEsCVtyMF0KKworCS8qIGlmIHNvLCByZXN1bWUgYXQgUFNQUiAqLworCWxkcglyMCwJPVBTUFIKKwlsZHIJcjEsCVtyMF0KKwltb3YJcGMsCXIxCisKKwkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisJLyogRGlzYWJsZSAobWFzaykgYWxsIGludGVycnVwdHMgYXQgaW50ZXJydXB0IGNvbnRyb2xsZXIJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbml0aXJxczoKKworCW1vdglyMSwgICMwCQkvKiBjbGVhciBpbnQuIGxldmVsIHJlZ2lzdGVyIChJUlEsIG5vdCBGSVEpICovCisJbGRyCXIyLCAgPUlDTFIKKwlzdHIJcjEsICBbcjJdCisKKwlsZHIJcjIsICA9SUNNUgkvKiBtYXNrIGFsbCBpbnRlcnJ1cHRzIGF0IHRoZSBjb250cm9sbGVyICAgICovCisJc3RyCXIxLCAgW3IyXQorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIENsb2NrIGluaXRpYWxpc2F0aW9uCQkJCQkJICAgICovCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbml0Y2xrczoKKworCS8qIERpc2FibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2tzLCBhbmQgc2V0IHRoZSBjb3JlIGNsb2NrIGZyZXF1ZW5jeSAgKi8KKworCS8qIFR1cm4gT2ZmIG9uLWNoaXAgcGVyaXBoZXJhbCBjbG9ja3MgKGV4Y2VwdCBmb3IgbWVtb3J5KQkgICAgKi8KKwkvKiBmb3IgcmUtY29uZmlndXJhdGlvbi4JCQkJCSAgICAqLworCWxkcglyMSwgID1DS0VOCisJbGRyCXIyLCAgPUNGR19DS0VOCisJc3RyCXIyLCAgW3IxXQorCisJLyogLi4uIGFuZCB3cml0ZSB0aGUgY29yZSBjbG9jayBjb25maWcgcmVnaXN0ZXIJCQkgICAgKi8KKwlsZHIJcjIsICA9Q0ZHX0NDQ1IKKwlsZHIJcjEsICA9Q0NDUgorCXN0cglyMiwgIFtyMV0KKworCS8qIFR1cm4gb24gdHVyYm8gbW9kZSAqLworCW1yYwlwMTQsIDAsIHIyLCBjNiwgYzAsIDAKKwlvcnIJcjIsIHIyLCAjMHhCCQkvKiBUdXJibywgRmFzdC1CdXMsIEZyZXEgY2hhbmdlKiovCisJbWNyCXAxNCwgMCwgcjIsIGM2LCBjMCwgMAorCisJLyogUmUtd3JpdGUgTURSRUZSICovCisJbGRyCXIxLCA9TUVNQ19CQVNFCisJbGRyCXIyLCBbcjEsICNNRFJFRlJfT0ZGU0VUXQorCXN0cglyMiwgW3IxLCAjTURSRUZSX09GRlNFVF0KKyNpZmRlZiBSVEMKKwkvKiBlbmFibGUgdGhlIDMyS2h6IG9zY2lsbGF0b3IgZm9yIFJUQyBhbmQgUG93ZXJNYW5hZ2VyCQkgICAgKi8KKwlsZHIJcjEsICA9T1NDQworCW1vdglyMiwgICNPU0NDX09PTgorCXN0cglyMiwgIFtyMV0KKworCS8qIE5PVEU6ICBzcGluIGhlcmUgdW50aWwgT1NDQy5PT0sgZ2V0IHNldCwgbWVhbmluZyB0aGUgUExMCSAgICAqLworCS8qIGhhcyBzZXR0bGVkLgkJCQkJCQkgICAgKi8KKzYwOgorCWxkcglyMiwgW3IxXQorCWFuZHMJcjIsIHIyLCAjMQorCWJlcQk2MGIKKyNlbHNlCisjZXJyb3IgIlJUQyBub3QgZGVmaW5lZCIKKyNlbmRpZgorCisJLyogSW50ZXJydXB0IGluaXQ6IE1hc2sgYWxsIGludGVycnVwdHMJCQkJICAgICovCisgICAgbGRyIHIwLCA9SUNNUiAvKiBlbmFibGUgbm8gc291cmNlcyAqLworCW1vdiByMSwgIzAKKyAgICBzdHIgcjEsIFtyMF0KKwkvKiBGSVhNRSAqLworCisjaWZkZWYgTk9ERUJVRworCS8qRGlzYWJsZSBzb2Z0d2FyZSBhbmQgZGF0YSBicmVha3BvaW50cyAqLworCW1vdglyMCwjMAorCW1jcglwMTUsMCxyMCxjMTQsYzgsMCAgLyogaWJjcjAgKi8KKwltY3IJcDE1LDAscjAsYzE0LGM5LDAgIC8qIGliY3IxICovCisJbWNyCXAxNSwwLHIwLGMxNCxjNCwwICAvKiBkYmNvbiAqLworCisJLypFbmFibGUgYWxsIGRlYnVnIGZ1bmN0aW9uYWxpdHkgKi8KKwltb3YJcjAsIzB4ODAwMDAwMDAKKwltY3IJcDE0LDAscjAsYzEwLGMwLDAgIC8qIGRjc3IgKi8KKyNlbmRpZgorCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCS8qIEVuZCBsb3dsZXZlbF9pbml0CQkJCQkJCSAgICAqLworCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworZW5kbG93bGV2ZWxfaW5pdDoKKworCW1vdglwYywgbHIKZGlmZiAtLWdpdCBhL2JvYXJkL3RyaXplcHNpdi9weGF2b2x0YWdlLlMgYi9ib2FyZC90cml6ZXBzaXYvcHhhdm9sdGFnZS5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNDExMzIKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC90cml6ZXBzaXYvcHhhdm9sdGFnZS5TCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDcKKyAqIFN0ZWZhbm8gQmFiaWMsIERFTlggR21iaCwgc2JhYmljQGRlbnguZGUKKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KKworCisJCS5nbG9iYWwJaW5pdFBYQXZvbHRhZ2UKKworaW5pdFBYQXZvbHRhZ2U6CisJCW1vdglwYywgbHIKKwpkaWZmIC0tZ2l0IGEvYm9hcmQvdHJpemVwc2l2L3UtYm9vdC5sZHMgYi9ib2FyZC90cml6ZXBzaXYvdS1ib290LmxkcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDEwMjM5Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvdHJpemVwc2l2L3UtYm9vdC5sZHMKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMAorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCitPVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWxpdHRsZWFybSIpCitPVVRQVVRfQVJDSChhcm0pCitFTlRSWShfc3RhcnQpCitTRUNUSU9OUworeworCS4gPSAweDAwMDAwMDAwOworCisJLiA9IEFMSUdOKDQpOworCS50ZXh0ICAgICAgOgorCXsKKwkgIGNwdS9weGEvc3RhcnQubwkoLnRleHQpCisJICAqKC50ZXh0KQorCX0KKworCS4gPSBBTElHTig0KTsKKwkucm9kYXRhIDogeyAqKC5yb2RhdGEpIH0KKworCS4gPSBBTElHTig0KTsKKwkuZGF0YSA6IHsgKiguZGF0YSkgfQorCisJLiA9IEFMSUdOKDQpOworCS5nb3QgOiB7ICooLmdvdCkgfQorCisJLiA9IC47CisJX191X2Jvb3RfY21kX3N0YXJ0ID0gLjsKKwkudV9ib290X2NtZCA6IHsgKigudV9ib290X2NtZCkgfQorCV9fdV9ib290X2NtZF9lbmQgPSAuOworCisJLiA9IEFMSUdOKDQpOworCV9fYnNzX3N0YXJ0ID0gLjsKKwkuYnNzIDogeyAqKC5ic3MpIH0KKwlfZW5kID0gLjsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG05MDAweC5jIGIvZHJpdmVycy9kbTkwMDB4LmMKaW5kZXggZTBkNTMxYi4uNjEzMWI1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbTkwMDB4LmMKKysrIGIvZHJpdmVycy9kbTkwMDB4LmMKQEAgLTk5LDcgKzk5LDcgQEAKIHN0YXRpYyBpbnQgZG05MDAwX3Byb2JlKHZvaWQpOwogc3RhdGljIHUxNiBwaHlfcmVhZChpbnQpOwogc3RhdGljIHZvaWQgcGh5X3dyaXRlKGludCwgdTE2KTsKLXN0YXRpYyB1MTYgcmVhZF9zcm9tX3dvcmQoaW50KTsKK3UxNiByZWFkX3Nyb21fd29yZChpbnQpOwogc3RhdGljIHU4IERNOTAwMF9pb3IoaW50KTsKIHN0YXRpYyB2b2lkIERNOTAwMF9pb3coaW50IHJlZywgdTggdmFsdWUpOwogCkBAIC01MzcsNyArNTM3LDcgQEAKIC8qCiAgIFJlYWQgYSB3b3JkIGRhdGEgZnJvbSBTUk9NCiAqLwotc3RhdGljIHUxNgordTE2CiByZWFkX3Nyb21fd29yZChpbnQgb2Zmc2V0KQogewogCURNOTAwMF9pb3coRE05MDAwX0VQQVIsIG9mZnNldCk7CkBAIC01NDcsNiArNTQ3LDE4IEBACiAJcmV0dXJuIChETTkwMDBfaW9yKERNOTAwMF9FUERSTCkgKyAoRE05MDAwX2lvcihETTkwMDBfRVBEUkgpIDw8IDgpKTsKIH0KIAordm9pZAord3JpdGVfc3JvbV93b3JkKGludCBvZmZzZXQsIHUxNiB2YWwpCit7CisJRE05MDAwX2lvdyhETTkwMDBfRVBBUiwgb2Zmc2V0KTsKKwlETTkwMDBfaW93KERNOTAwMF9FUERSSCwgKCh2YWwgPj4gOCkgJiAweGZmKSk7CisJRE05MDAwX2lvdyhETTkwMDBfRVBEUkwsICh2YWwgJiAweGZmKSk7CisJRE05MDAwX2lvdyhETTkwMDBfRVBDUiwgMHgxMik7CisJdWRlbGF5KDgwMDApOworCURNOTAwMF9pb3coRE05MDAwX0VQQ1IsIDApOworfQorCisKIC8qCiAgICBSZWFkIGEgYnl0ZSBmcm9tIEkvTyBwb3J0CiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3RyaXplcHNpdi5oIGIvaW5jbHVkZS9jb25maWdzL3RyaXplcHNpdi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0OTk4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdHJpemVwc2l2LmgKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDcKKyAqIFN0ZWZhbm8gQmFiaWMsIERFTlggR21iaCwgc2JhYmljQGRlbnguZGUKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDQKKyAqIFJvYmVydCBXaGFsZXksIEFwcGxpZWQgRGF0YSBTeXN0ZW1zLCBJbmMuIHJ3aGFsZXlAYXBwbGllZGRhdGEubmV0CisgKgorICogKEMpIENvcHlyaWdodCAyMDAyCisgKiBLeWxlIEhhcnJpcywgTmV4dXMgVGVjaG5vbG9naWVzLCBJbmMuIGtoYXJyaXNAbmV4dXMtdGVjaC5uZXQKKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDIKKyAqIFN5c2dvIFJlYWwtVGltZSBTb2x1dGlvbnMsIEdtYkggPHd3dy5lbGlub3MuY29tPgorICogTWFyaXVzIEdyb2VnZXIgPG1ncm9lZ2VyQHN5c2dvLmRlPgorICoKKyAqIENvbmZpZ3VhdGlvbiBzZXR0aW5ncyBmb3IgdGhlIExVQkJPQ0sgYm9hcmQuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCSBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0NPTkZJR19ICisjZGVmaW5lIF9fQ09ORklHX0gKKworLyoKKyAqIEhpZ2ggTGV2ZWwgQ29uZmlndXJhdGlvbiBPcHRpb25zCisgKiAoZWFzeSB0byBjaGFuZ2UpCisgKi8KKyNkZWZpbmUgQ09ORklHX1BYQTI3WAkJMQkvKiBUaGlzIGlzIGFuIFBYQTI3eCBDUFUgICAgKi8KKworI2RlZmluZSBMSVRUTEVFTkRJQU4JCTEJLyogdXNlZCBieSB1c2Jfb2hjaS5jCQkqLworCisjZGVmaW5lIENPTkZJR19NTUMJCTEKKyNkZWZpbmUgQk9BUkRfTEFURV9JTklUCQkxCisKKyN1bmRlZiBDT05GSUdfVVNFX0lSUQkJCS8qIHdlIGRvbid0IG5lZWQgSVJRL0ZJUSBzdHVmZiAqLworCisjZGVmaW5lIFJUQworCisvKgorICogU2l6ZSBvZiBtYWxsb2MoKSBwb29sCisgKi8KKyNkZWZpbmUgQ0ZHX01BTExPQ19MRU4JICAgIChDRkdfRU5WX1NJWkUgKyAxMjgqMTAyNCkKKyNkZWZpbmUgQ0ZHX0dCTF9EQVRBX1NJWkUJMTI4CS8qIHNpemUgaW4gYnl0ZXMgcmVzZXJ2ZWQgZm9yIGluaXRpYWwgZGF0YSAqLworCisvKgorICogSGFyZHdhcmUgZHJpdmVycworICovCisKKy8qCisgKiBzZWxlY3Qgc2VyaWFsIGNvbnNvbGUgY29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19TRVJJQUxfTVVMVEkKKyNkZWZpbmUgQ09ORklHX0ZGVUFSVAkgICAgICAgMSAgICAgICAvKiB3ZSB1c2UgRkZVQVJUIG9uIENvbnhzICovCisjZGVmaW5lIENPTkZJR19CVFVBUlQJICAgICAgIDEgICAgICAgLyogd2UgdXNlIEJUVUFSVCBvbiBDb254cyAqLworI2RlZmluZSBDT05GSUdfU1RVQVJUCSAgICAgICAxICAgICAgIC8qIHdlIHVzZSBTVFVBUlQgb24gQ29ueHMgKi8KKworLyogYWxsb3cgdG8gb3ZlcndyaXRlIHNlcmlhbCBhbmQgZXRoYWRkciAqLworI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQorCisjZGVmaW5lIENPTkZJR19CQVVEUkFURQkgICAgICAgMzg0MDAKKworI2RlZmluZSBDT05GSUdfRE9TX1BBUlRJVElPTiAgIDEKKworLyoKKyAqIENvbW1hbmQgbGluZSBjb25maWd1cmF0aW9uLgorICovCisjaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+CisKKyNkZWZpbmUgQ09ORklHX0NNRF9NTUMKKyNkZWZpbmUgQ09ORklHX0NNRF9GQVQKKyNkZWZpbmUgQ09ORklHX0NNRF9JTUxTCisjZGVmaW5lIENPTkZJR19DTURfUElORworI2RlZmluZSBDT05GSUdfQ01EX1VTQgorCisvKiB0aGlzIG11c3QgYmUgaW5jbHVkZWQgQUZURVIgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX0NPTU1BTkRTIChpZiBhbnkpICovCisKKyN1bmRlZiBDT05GSUdfU0hPV19CT09UX1BST0dSRVNTCisKKyNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQkzCisjZGVmaW5lIENPTkZJR19TRVJWRVJJUAkJMTkyLjE2OC4xLjk5CisjZGVmaW5lIENPTkZJR19CT09UQ09NTUFORAkicnVuIGJvb3RfZmxhc2giCisjZGVmaW5lIENPTkZJR19CT09UQVJHUwkJImNvbnNvbGU9dHR5UzAsMzg0MDAgcmFtZGlza19zaXplPTEyMjg4IlwKKwkJCQkiIHJ3IHJvb3Q9L2Rldi9yYW0gaW5pdHJkPTB4YTA4MDAwMDAsNW0iCisKKyNkZWZpbmUgQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUwkJCQkJXAorCSJwcm9ncmFtX2Jvb3RfbW1jPSIJCQkJCQlcCisJCQkibXcuYiAweGEwMDEwMDAwIDB4ZmYgMHgyMDAwMDsgIgkJXAorCQkJImlmCSBtbWNpbml0ICYmICIJCQkJXAorCQkJCSJmYXRsb2FkIG1tYyAwIDB4YTAwMTAwMDAgdS1ib290LmJpbjsgIglcCisJCQkidGhlbiAiCQkJCQkJXAorCQkJCSJwcm90ZWN0IG9mZiAweDAgMHgxZmZmZjsgIgkJXAorCQkJCSJlcmFzZSAweDAgMHgxZmZmZjsgIgkJCVwKKwkJCQkiY3AuYiAweGEwMDEwMDAwIDB4MCAweDIwMDAwOyAiCQlcCisJCQkiZmlcMCIJCQkJCQlcCisJInByb2dyYW1fdXpJbWFnZV9tbWM9IgkJCQkJCVwKKwkJCSJtdy5iIDB4YTAwMTAwMDAgMHhmZiAweDE4MDAwMDsgIgkJXAorCQkJImlmCSBtbWNpbml0ICYmICIJCQkJXAorCQkJCSJmYXRsb2FkIG1tYyAwIDB4YTAwMTAwMDAgdXpJbWFnZTsgIglcCisJCQkidGhlbiAiCQkJCQkJXAorCQkJCSJwcm90ZWN0IG9mZiAweDQwMDAwIDB4MWJmZmZmOyAiCVwKKwkJCQkiZXJhc2UgMHg0MDAwMCAweDFiZmZmZjsgIgkJXAorCQkJCSJjcC5iIDB4YTAwMTAwMDAgMHg0MDAwMCAweDE4MDAwMDsgIglcCisJCQkiZmlcMCIJCQkJCQlcCisJInByb2dyYW1fcmFtZGlza19tbWM9IgkJCQkJCVwKKwkJCSJtdy5iIDB4YTAwMTAwMDAgMHhmZiAweDUwMDAwMDsgIgkJXAorCQkJImlmCSBtbWNpbml0ICYmICIJCQkJXAorCQkJCSJmYXRsb2FkIG1tYyAwIDB4YTAwMTAwMDAgcmFtZGlzay5nejsgIglcCisJCQkidGhlbiAiCQkJCQkJXAorCQkJCSJwcm90ZWN0IG9mZiAweDFjMDAwMCAweDZiZmZmZjsgIglcCisJCQkJImVyYXNlIDB4MWMwMDAwIDB4NmJmZmZmOyAiCQlcCisJCQkJImNwLmIgMHhhMDAxMDAwMCAweDFjMDAwMCAweDUwMDAwMDsgIglcCisJCQkiZmlcMCIJCQkJCQlcCisJImJvb3RfbW1jPSIJCQkJCQkJXAorCQkJImlmCSBtbWNpbml0ICYmICIJCQkJXAorCQkJCSJmYXRsb2FkIG1tYyAwIDB4YTAwMzAwMDAgdXpJbWFnZSAmJiAiCVwKKwkJCQkiZmF0bG9hZCBtbWMgMCAweGEwODAwMDAwIHJhbWRpc2suZ3o7ICIJXAorCQkJInRoZW4gIgkJCQkJCVwKKwkJCQkiYm9vdG0gMHhhMDAzMDAwMDsgIgkJCVwKKwkJCSJmaVwwIgkJCQkJCVwKKwkiYm9vdF9mbGFzaD0iCQkJCQkJCVwKKwkJCSJjcC5iIDB4MWMwMDAwIDB4YTA4MDAwMDAgMHg1MDAwMDA7ICIJCVwKKwkJCSJib290bSAweDQwMDAwXDAiCQkJCVwKKworI2RlZmluZSBDT05GSUdfU0VUVVBfTUVNT1JZX1RBR1MgMQorI2RlZmluZSBDT05GSUdfQ01ETElORV9UQUcJIDEJLyogZW5hYmxlIHBhc3Npbmcgb2YgQVRBR3MJKi8KKy8qICNkZWZpbmUgQ09ORklHX0lOSVRSRF9UQUcJIDEgKi8KKworI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0tHREIpCisjZGVmaW5lIENPTkZJR19LR0RCX0JBVURSQVRFCTIzMDQwMAkJLyogc3BlZWQgdG8gcnVuIGtnZGIgc2VyaWFsIHBvcnQgKi8KKyNkZWZpbmUgQ09ORklHX0tHREJfU0VSX0lOREVYCTIJCS8qIHdoaWNoIHNlcmlhbCBwb3J0IHRvIHVzZSAqLworI2VuZGlmCisKKy8qCisgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCisgKi8KKyNkZWZpbmUgQ0ZHX0hVU0hfUEFSU0VSCQkxCisjZGVmaW5lIENGR19QUk9NUFRfSFVTSF9QUzIJIj4gIgorCisjZGVmaW5lIENGR19MT05HSEVMUAkJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkJKi8KKyNpZmRlZiBDRkdfSFVTSF9QQVJTRVIKKyNkZWZpbmUgQ0ZHX1BST01QVAkJIiQgIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLworI2Vsc2UKKyNkZWZpbmUgQ0ZHX1BST01QVAkJIj0+ICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KKyNlbmRpZgorI2RlZmluZSBDRkdfQ0JTSVpFCQkyNTYJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplCSovCisjZGVmaW5lIENGR19QQlNJWkUgKENGR19DQlNJWkUrc2l6ZW9mKENGR19QUk9NUFQpKzE2KSAvKiBQcmludCBCdWZmZXIgU2l6ZSAqLworI2RlZmluZSBDRkdfTUFYQVJHUwkJMTYJCS8qIG1heCBudW1iZXIgb2YgY29tbWFuZCBhcmdzCSovCisjZGVmaW5lIENGR19CQVJHU0laRQkJQ0ZHX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplCSovCisjZGVmaW5lIENGR19ERVZJQ0VfTlVMTERFVgkxCisKKyNkZWZpbmUgQ0ZHX01FTVRFU1RfU1RBUlQJMHhhMDQwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uCSovCisjZGVmaW5lIENGR19NRU1URVNUX0VORAkJMHhhMDgwMDAwMAkvKiA0IC4uLiA4IE1CIGluIERSQU0JKi8KKworI3VuZGVmCUNGR19DTEtTX0lOX0haCQkvKiBldmVyeXRoaW5nLCBpbmNsIGJvYXJkIGluZm8sIGluIEh6ICovCisKKyNkZWZpbmUgQ0ZHX0xPQURfQUREUgkJMHhhMTAwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLworCisjZGVmaW5lIENGR19IWgkJCTM2ODY0MDAJCS8qIGluY3JlbWVudGVyIGZyZXE6IDMuNjg2NCBNSHogKi8KKyNkZWZpbmUgQ0ZHX0NQVVNQRUVECQkweDIwNwkJLyogbmVlZCB0byBsb29rIG1vcmUgY2xvc2VseSwgSSB0aGluayB0aGlzIGlzIFR1cmJvID0gMngsIEw9OTFNaHogKi8KKworCQkJCQkJLyogdmFsaWQgYmF1ZHJhdGVzICovCisjZGVmaW5lIENGR19CQVVEUkFURV9UQUJMRQl7IDk2MDAsIDE5MjAwLCAzODQwMCwgNTc2MDAsIDExNTIwMCB9CisKKyNkZWZpbmUgQ0ZHX01NQ19CQVNFCQkweEYwMDAwMDAwCisKKy8qCisgKiBTdGFjayBzaXplcworICoKKyAqIFRoZSBzdGFjayBzaXplcyBhcmUgc2V0IHVwIGluIHN0YXJ0LlMgdXNpbmcgdGhlIHNldHRpbmdzIGJlbG93CisgKi8KKyNkZWZpbmUgQ09ORklHX1NUQUNLU0laRQkoMTI4KjEwMjQpCS8qIHJlZ3VsYXIgc3RhY2sgKi8KKyNpZmRlZiBDT05GSUdfVVNFX0lSUQorI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFX0lSUQkoNCoxMDI0KQkvKiBJUlEgc3RhY2sgKi8KKyNkZWZpbmUgQ09ORklHX1NUQUNLU0laRV9GSVEJKDQqMTAyNCkJLyogRklRIHN0YWNrICovCisjZW5kaWYKKworLyoKKyAqIFBoeXNpY2FsIE1lbW9yeSBNYXAKKyAqLworI2RlZmluZSBDT05GSUdfTlJfRFJBTV9CQU5LUwk0CSAgIC8qIHdlIGhhdmUgMiBiYW5rcyBvZiBEUkFNICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMQkJMHhhMDAwMDAwMCAvKiBTRFJBTSBCYW5rICMxICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMV9TSVpFCTB4MDQwMDAwMDAgLyogNjQgTUIgKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8yCQkweGE0MDAwMDAwIC8qIFNEUkFNIEJhbmsgIzIgKi8KKyNkZWZpbmUgUEhZU19TRFJBTV8yX1NJWkUJMHgwMDAwMDAwMCAvKiAwIE1CICovCisjZGVmaW5lIFBIWVNfU0RSQU1fMwkJMHhhODAwMDAwMCAvKiBTRFJBTSBCYW5rICMzICovCisjZGVmaW5lIFBIWVNfU0RSQU1fM19TSVpFCTB4MDAwMDAwMDAgLyogMCBNQiAqLworI2RlZmluZSBQSFlTX1NEUkFNXzQJCTB4YWMwMDAwMDAgLyogU0RSQU0gQmFuayAjNCAqLworI2RlZmluZSBQSFlTX1NEUkFNXzRfU0laRQkweDAwMDAwMDAwIC8qIDAgTUIgKi8KKworI2RlZmluZSBQSFlTX0ZMQVNIXzEJCTB4MDAwMDAwMDAgLyogRmxhc2ggQmFuayAjMSAqLworCisjZGVmaW5lIENGR19EUkFNX0JBU0UJCTB4YTAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0RSQU1fU0laRQkJMHgwNDAwMDAwMAorCisjZGVmaW5lIENGR19GTEFTSF9CQVNFCQlQSFlTX0ZMQVNIXzEKKworLyoKKyAqIEdQSU8gc2V0dGluZ3MKKyAqLworI2RlZmluZSBDRkdfR1BTUjBfVkFMCQkweDAwMDE4MDAwCisjZGVmaW5lIENGR19HUFNSMV9WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0dQU1IyX1ZBTAkJMHg0MDBkYzAwMAorI2RlZmluZSBDRkdfR1BTUjNfVkFMCQkweDAwMDAwMDAwCisjZGVmaW5lIENGR19HUENSMF9WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0dQQ1IxX1ZBTAkJMHgwMDAwMDAwMAorI2RlZmluZSBDRkdfR1BDUjJfVkFMCQkweDAwMDAwMDAwCisjZGVmaW5lIENGR19HUENSM19WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0dQRFIwX1ZBTAkJMHgwMDAxODAwMAorI2RlZmluZSBDRkdfR1BEUjFfVkFMCQkweDAwMDI4ODAxCisjZGVmaW5lIENGR19HUERSMl9WQUwJCTB4NTIwZGMwMDAKKyNkZWZpbmUgQ0ZHX0dQRFIzX1ZBTAkJMHgwMDAxRTAwMAorI2RlZmluZSBDRkdfR0FGUjBfTF9WQUwJCTB4ODAxYzAwMDAKKyNkZWZpbmUgQ0ZHX0dBRlIwX1VfVkFMCQkweDAwMDAwMDEzCisjZGVmaW5lIENGR19HQUZSMV9MX1ZBTAkJMHg2OTkwMTAwQQorI2RlZmluZSBDRkdfR0FGUjFfVV9WQUwJCTB4MDAwMDAwMDgKKyNkZWZpbmUgQ0ZHX0dBRlIyX0xfVkFMCQkweEEwMDAwMDAwCisjZGVmaW5lIENGR19HQUZSMl9VX1ZBTAkJMHgwMTA5MDBGMgorI2RlZmluZSBDRkdfR0FGUjNfTF9WQUwJCTB4NTQwMDAwMDMKKyNkZWZpbmUgQ0ZHX0dBRlIzX1VfVkFMCQkweDAwMDAyNDAxCisjZGVmaW5lIENGR19HUkVSMF9WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0dSRVIxX1ZBTAkJMHgwMDAwMDAwMAorI2RlZmluZSBDRkdfR1JFUjJfVkFMCQkweDAwMDAwMDAwCisjZGVmaW5lIENGR19HUkVSM19WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0dGRVIwX1ZBTAkJMHgwMDAwMDAwMAorI2RlZmluZSBDRkdfR0ZFUjFfVkFMCQkweDAwMDAwMDAwCisjZGVmaW5lIENGR19HRkVSMl9WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX0dGRVIzX1ZBTAkJMHgwMDAwMDAyMAorCisKKyNkZWZpbmUgQ0ZHX1BTU1JfVkFMCQkweDIwCS8qIENIRUNLICovCisKKy8qCisgKiBDbG9jayBzZXR0aW5ncworICovCisjZGVmaW5lIENGR19DS0VOCQkweDAxRkZGRkZGCS8qIENIRUNLICovCisjZGVmaW5lIENGR19DQ0NSCQkweDAyMDAwMjkwIC8qICAgNTIwTWh6ICovCisKKy8qCisgKiBNZW1vcnkgc2V0dGluZ3MKKyAqLworCisjZGVmaW5lIENGR19NU0MwX1ZBTAkJMHg0ZGY4NGRmMAorI2RlZmluZSBDRkdfTVNDMV9WQUwJCTB4N2ZmODdmZjQKKyNkZWZpbmUgQ0ZHX01TQzJfVkFMCQkweGEyNjkzNmQ0CisjZGVmaW5lIENGR19NRENORkdfVkFMCQkweDg4MDAwOUM5CisjZGVmaW5lIENGR19NRFJFRlJfVkFMCQkweDIwY2EyMDFlCisjZGVmaW5lIENGR19NRE1SU19WQUwJCTB4MDAyMjAwMjIKKworI2RlZmluZSBDRkdfRkxZQ05GR19WQUwJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ0ZHX1NYQ05GR19WQUwJCTB4NDAwNDQwMDQKKworLyoKKyAqIFBDTUNJQSBhbmQgQ0YgSW50ZXJmYWNlcworICovCisjZGVmaW5lIENGR19NRUNSX1ZBTAkJMHgwMDAwMDAwMQorI2RlZmluZSBDRkdfTUNNRU0wX1ZBTAkJMHgwMDAwNDIwNAorI2RlZmluZSBDRkdfTUNNRU0xX1ZBTAkJMHgwMDAxMDIwNAorI2RlZmluZSBDRkdfTUNBVFQwX1ZBTAkJMHgwMDAxMDUwNAorI2RlZmluZSBDRkdfTUNBVFQxX1ZBTAkJMHgwMDAxMDUwNAorI2RlZmluZSBDRkdfTUNJTzBfVkFMCQkweDAwMDA4NDA3CisjZGVmaW5lIENGR19NQ0lPMV9WQUwJCTB4MDAwMGMxMDgKKworI2RlZmluZSBDT05GSUdfRFJJVkVSX0RNOTAwMAkJMQorI2RlZmluZSBDT05GSUdfRFJJVkVSX0RNOTAwMAkJMQorI2RlZmluZSBDT05GSUdfRE05MDAwX0JBU0UJMHgwODAwMDAwMAorI2RlZmluZSBETTkwMDBfSU8JCQlDT05GSUdfRE05MDAwX0JBU0UKKyNkZWZpbmUgRE05MDAwX0RBVEEJCQkoQ09ORklHX0RNOTAwMF9CQVNFKzB4ODAwNCkKKy8qICNkZWZpbmUgQ09ORklHX0RNOTAwMF9VU0VfOEJJVCAqLworLyogI2RlZmluZSBDT05GSUdfRE05MDAwX1VTRV8xNkJJVCAqLworI2RlZmluZSBDT05GSUdfRE05MDAwX1VTRV8zMkJJVAorCisjZGVmaW5lIENPTkZJR19VU0JfT0hDSV9ORVcJMQorI2RlZmluZSBDRkdfVVNCX09IQ0lfQk9BUkRfSU5JVAkxCisjZGVmaW5lIENGR19VU0JfT0hDSV9NQVhfUk9PVF9QT1JUUwkzCisjZGVmaW5lIENGR19VU0JfT0hDSV9SRUdTX0JBU0UJMHg0QzAwMDAwMAorI2RlZmluZSBDRkdfVVNCX09IQ0lfU0xPVF9OQU1FCSJ0cml6ZXBzaXYiCisjZGVmaW5lIENPTkZJR19VU0JfU1RPUkFHRQkxCisjZGVmaW5lIENGR19VU0JfT0hDSV9DUFVfSU5JVAkxCisKKy8qCisgKiBGTEFTSCBhbmQgZW52aXJvbm1lbnQgb3JnYW5pemF0aW9uCisgKi8KKworI2RlZmluZSBDRkdfRkxBU0hfQ0ZJCisjZGVmaW5lIENGR19GTEFTSF9DRklfRFJJVkVSCTEKKworI2RlZmluZSBDRkdfTU9OSVRPUl9CQVNFCTAKKyNkZWZpbmUgQ0ZHX01PTklUT1JfTEVOCQkweDQwMDAwCisKKyNkZWZpbmUgQ0ZHX01BWF9GTEFTSF9CQU5LUwkxCS8qIG1heCBudW1iZXIgb2YgbWVtb3J5IGJhbmtzCQkqLworI2RlZmluZSBDRkdfTUFYX0ZMQVNIX1NFQ1QJNCArIDI1NSAgLyogbWF4IG51bWJlciBvZiBzZWN0b3JzIG9uIG9uZSBjaGlwICAgICovCisKKy8qIHRpbWVvdXQgdmFsdWVzIGFyZSBpbiB0aWNrcyAqLworI2RlZmluZSBDRkdfRkxBU0hfRVJBU0VfVE9VVAkoMjUqQ0ZHX0haKSAvKiBUaW1lb3V0IGZvciBGbGFzaCBFcmFzZSAqLworI2RlZmluZSBDRkdfRkxBU0hfV1JJVEVfVE9VVAkoMjUqQ0ZHX0haKSAvKiBUaW1lb3V0IGZvciBGbGFzaCBXcml0ZSAqLworCisvKiB3cml0ZSBmbGFzaCBsZXNzIHNsb3dseSAqLworI2RlZmluZSBDRkdfRkxBU0hfVVNFX0JVRkZFUl9XUklURSAxCisKKy8qIEZsYXNoIGVudmlyb25tZW50IGxvY2F0aW9ucyAqLworI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNICTEKKyNkZWZpbmUgQ0ZHX0VOVl9BRERSCQkoUEhZU19GTEFTSF8xICsgQ0ZHX01PTklUT1JfTEVOKQkvKiBBZGRyIG9mIEVudmlyb25tZW50IFNlY3RvcgkqLworI2RlZmluZSBDRkdfRU5WX1NJWkUJCTB4NDAwMDAJLyogVG90YWwgU2l6ZSBvZiBFbnZpcm9ubWVudCAgICAgCSovCisjZGVmaW5lIENGR19FTlZfU0VDVF9TSVpFCTB4NDAwMDAJLyogVG90YWwgU2l6ZSBvZiBFbnZpcm9ubWVudCBTZWN0b3IJKi8KKworLyogQWRkcmVzcyBhbmQgc2l6ZSBvZiBSZWR1bmRhbnQgRW52aXJvbm1lbnQgU2VjdG9yCSovCisjZGVmaW5lIENGR19FTlZfQUREUl9SRURVTkQJKENGR19FTlZfQUREUitDRkdfRU5WX1NFQ1RfU0laRSkKKyNkZWZpbmUgQ0ZHX0VOVl9TSVpFX1JFRFVORAkoQ0ZHX0VOVl9TSVpFKQorCisjZW5kaWYJLyogX19DT05GSUdfSCAqLwo=